<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let arr = [10, 11, 12, 13, 14];
        
        // 5. reduce
       const newArr =  arr.reduce((prev, item) => {
            if(item % 2 == 0) {
                prev.push(item / 2);
            }
             return prev;
       }, [])


        // const newArr = arr
        // .filter(item => item % 2 == 0)
        // .map(item => item / 2)

        console.log(newArr);
        
        
        
        
        // let arr2 = [10, 11, [12, 13], 14];
        // const newArr = arr2.reduce((prev, item, index) => {
        //     return prev.concat(item)
        // }, [])
        // console.log(newArr);
        

        // const result = arr.reduce((prev, item, index) => {
        //     // console.log(`第${index + 1}轮循环`, prev);
        //     return prev + item;
        // }, 0);
        // console.log(result);


        // 4. some、every
        // - 遍历数组
        // - 得到一个布尔值

        // some：只要有一个满足条件，则最终结果为true
        // const someBool = arr.some((item, index) => {
        //     return item % 10 == 0;
        // })
        // console.log(someBool);

        // every：必须全部满足条件，则最终结果为true
        // const everyBool = arr.every((item, index) => {
        //     return item % 10 == 0;
        // })
        // console.log(everyBool);



        // 1. forEach：单纯的遍历
        // arr.forEach((item, index) => {
        //     console.log(item, index);
        // });


        // 2. map：
        // - 遍历数组
        // - 得到一个新数组
        //   - 新数组和旧数组的长度一样
        //   - 新数组的数据可以和旧数组不一样
        // const newArr = arr.map((item, index) => {
        //     // console.log(item, index);
        //     // 将return后面的值添加到新数组newArr中
        //     return item * 2;
        // })
        // console.log(newArr);

        // 3. filter：筛选数组，将旧数组中满足条件的数据加入到新数组中
        // - 遍历数组
        // - 得到一个新数组
        //   - 新数组的长度可以和旧数组长度不一样（可以少，不能多）
        //   - 新数组留下的数据一定和旧数组一样
        // const newArr = arr.filter((item, index) => {
        //     // console.log(item, index);
        //     return item % 2 === 0;
        // })
        // console.log(newArr);


    </script>
</body>

</html>